<?php  namespace Common\Model;

use Hdphp\Model\Model;

class Cate extends Model{
	protected $table = 'category';
	
	protected $validate = array(
	
		array('cname','required','分类名称不能为空',3,3),
	
	);
	
	public function addData(){
		if(!$this->create()) return false;
		$this->updateCache();
		$this->add();
		return true;
	}
	
	public function editData(){
		if(!$this->create()) return false;
		$this->save();
		return true;
	}
	
	public function updateCache(){
		//清除缓存
		Cache::del('category');
	}
	
	public function getNoMy($cid){
		//拿到要当前分类和子分类的cid
		$cids = $this->getSon($this->get(),$cid);
		//把当前的分类也押进数组
		$cids [] = $cid;
		//把数组专为字符串
		$strCids = implode(',', $cids);
		//取得cid不属于字符串里分类数据 
		return $this->where("cid NOT IN (".$strCids.")")->get();
	}
	
	public function getSon($data,$cid){
		$temp = array();
		foreach ($data as $v) {
			if($v['pid'] == $cid){
				$temp[] = $v['cid'];
				$temp = array_merge($temp,$this->getSon($data,$v['cid']));
			}
		}
		return $temp;
	}
	
	//把分类数据存到缓存
	public function getAll(){
		//声明一个静态变量 用来存分类数据
		static $data = NULL;
		//如$data为真就把$data返回 即有缓存 直接用缓存 不用再到数据库查找
		if($data) return $data;
		//把分类缓存赋值给$cdata
		$cdata = S('category');
		//如果$cdata为假 即代表没有缓存 那就要到数据库拿数据
		if(!$cdata){
			//查询数据库 取得分类数据
			$temp = $this->get();
			//声明空数组 重组$temp
			$cdata = array();
			foreach ($temp as  $v) {
				//把cid主键作为键名
				$cdata[$v['cid']] = $v;
			}
			//把分类数据设置缓存
			S('category',$cdata);
		}
		//存入静态变量
		$data = $cdata;
		return $cdata;
	}
}



 ?>